package com.ruoyi.system.service;

import com.ruoyi.system.domain.PoPublicOpinion;
import com.ruoyi.system.domain.ReportElement;
import com.ruoyi.system.domain.vo.NameValue;
import com.ruoyi.system.domain.vo.OpTypeNumVM;

import java.util.List;
import java.util.Map;

public interface IGenerateReportService {

    /**
     * 获取本期导读信息
     * @param eventId
     * @return
     */
    String getBriefingGuide(Long eventId);

    /**
     * 获取处置建议
     * @param eventId
     * @return
     */
    String getSuggestions(Long eventId);

    /**
     * 获取监测概述
     * @param eventId
     * @return
     */
    String getMonitoringOverview(Long eventId);

    /**
     * 获取事件简介
     * @param eventId
     * @return
     */
    String getEventOverview(Long eventId);

    /**
     * 获取简报概述
     * @param eventId
     * @return
     */
    String getBriefingOverview(Long eventId);



    /**
     * 获取信息趋势
     * @param eventId
     * @return
     */
    Map<String,Object> getInformationTrend(Long eventId);

    /**
     * 媒体来源分析
     * @param eventId
     * @return
     */
    List<NameValue> getMediaNameAnalysis(Long eventId);

    /**
     * 媒体类型分析
     * @param eventId
     * @return
     */
    List<NameValue> getMediaTypeAnalysis(Long eventId);

    /**
     * 获取信息情感分布
     * @param eventId
     * @return
     */
    OpTypeNumVM getEmotionDistribution(Long eventId);

    /**
     * 首发媒体
     * @param eventId
     * @return
     */
    List<PoPublicOpinion> getStartingMedia(Long eventId);



    /**
     * 媒体传播分析
     * @param eventId
     * @param timeType
     * @param beginPublishDay
     * @param endPublishDay
     * @return
     */
    Map<String,Object> getMediaNameTrend(Long eventId, String timeType, String beginPublishDay, String endPublishDay);

    /**
     * 手动生产简报
     * @param eventId
     * @param elements
     * @return
     */
    String generateReportByManual(Long eventId, List<ReportElement> elements);

    /**
     * 定时生成简报
     * @param eventId
     * @param templateId
     * @param type
     */
    void generateReportByTimedExecution(Long eventId, Long templateId, String type);

    Map<String,Object> getEventStage(Long eventId);



    int wordToPdfByReportId(Long reportId);


}
